1 package uba.db.table;
2
3 import java.util.Iterator;
4
5 import org.apache.commons.collections.IteratorUtils;
6 import org.apache.commons.lang.builder.EqualsBuilder;
7 import org.apache.commons.lang.builder.HashCodeBuilder;
8
9 /***
10 * Representa una fila.
11 *
12 * @version $Revision: 1.4 $
13 */
14 public class Row {
15 private Table table;
16 private Object[] values;
17
18 /***
19 * Crea una fila, indicando cual la tabla a la que pertenece.
20 *
21 * @param table
22 * tabla a la que pertenece la fila.
23 * @param values
24 * valores que contiene la fila (notar que el tamaņo del arreglo
25 * values debe ser igual a la cantidad de columnas de la tabla).
26 *
27 * @throws IllegalArgumentException
28 * si el tamaņo del arreglo values no es igual a la cantidad de
29 * columnas definidas por el esquema
30 */
31 public Row(Table table, Object[] values) throws IllegalArgumentException {
32 if (values.length != table.numberOfColumns()) {
33 throw new IllegalArgumentException("values.length != table.numberOfColumns()");
34 }
35 this.table = table;
36 this.values = values;
37 }
38
39 /***
40 * Retorna la tabla a la que pertenece esta fila.
41 */
42 public Table table() {
43 return table;
44 }
45
46 /***
47 * Retorna el valor de una columna.
48 *
49 * @param columnIndex
50 * el indice de la columna a retornar (comienza en 0).
51 *
52 * @return el valor de la columna.
53 */
54 public Object valueAt(int columnIndex) {
55 return values[columnIndex];
56 }
57
58 /***
59 * @see java.lang.Object#equals(java.lang.Object)
60 */
61 public boolean equals(Object obj) {
62 return EqualsBuilder.reflectionEquals(this, obj);
63 }
64
65 /***
66 * @see java.lang.Object#hashCode()
67 */
68 public int hashCode() {
69 return HashCodeBuilder.reflectionHashCode(this);
70 }
71
72 public Iterator valueIterator() {
73 return IteratorUtils.arrayIterator(values);
74 }
75 }